home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Moscow ML 1.31 / source code / mosml / src / test / test4.sml < prev    next >
Encoding:
Text File  |  1996-07-03  |  804 b   |  52 lines  |  [TEXT/R*ch]

  1. fun map f [] = []
  2.   | map f (x :: xs) = f x :: map f xs;
  3.  
  4. map (fn n => n+1) [1,2,3];
  5.  
  6. infix 5 ++;
  7.  
  8. fun [] ++ ys = ys
  9.   | (x :: xs) ++ ys = x :: (xs ++ ys);
  10.  
  11. [1,2,3] ++ [4,5,6];
  12.  
  13. fun reverse xs =
  14.   let
  15.     infix -->
  16.     fun [] --> ys = ys
  17.       | (x::xs) --> ys = xs --> (x::ys)
  18.   in xs --> [] end;
  19.  
  20. reverse [1,2,3,4];
  21. reverse [true,false];
  22.  
  23. infix 3 o;
  24. fun (f o g) x = f(g x);
  25.  
  26. val I = reverse o reverse;
  27.  
  28. I [1,2,3];
  29.  
  30. val zl = [(1,true),(2,false),(3,true)];
  31.  
  32. fun fst (x,_) = x;
  33. fun snd (_,y) = y;
  34.  
  35. map fst zl;
  36.  
  37. fun split [] = ([],[])
  38.   | split ((x,y) :: rest) =
  39.       let val (xs,ys) = split rest in
  40.         (x :: xs, y :: ys)
  41.       end;
  42.  
  43. split zl;
  44.  
  45. fun member a [] = false
  46.   | member a (x::xs) =
  47.       case a=x
  48.         of true => true
  49.          | false => member a xs;
  50. member 3 [1,2,3,4];
  51. member 3 [1,2];
  52.